万卷网> 蓝桥竞赛 >蓝桥C++ > 2024年12月蓝桥杯蓝桥C++(STEMA)中/高级

2024年12月蓝桥杯蓝桥C++(STEMA)中/高级
STEMA 2024 2025-06-10 10:35:24 69

一、单选题

1.

运行以下程序,输出的结果是( )。

int x(int arr[], int n)
{
	int ans = 0;
	for (int i = 0; i < n - 1; i++)
	{
		int m = i;
		for (int j = i + 1; j < n; j++)
		{
			if (arr[j] < arr[m])
				m = j;
		}
		if (m != i)
		{
			int temp = arr[i];
			arr[i] = arr[m];
			arr[m] = temp;
			ans++;
		}
	}
	return ans;
}
int main()
{
	int arr[] = {64, 25, 12, 22, 11, 90, 34};
	cout << x(arr, 7) << endl;
	for(int i = 0; i < 7; i++)
		cout << arr[i] << " ";
	return 0;
}
A.

4

90 64 34 25 22 12 11

B.

5

11 12 22 25 34 64 90

C.

6

90 64 34 25 22 12 11

D.

6

11 12 22 25 34 64 90

2.

运行以下程序,输出的结果是()。

cout<<5 * 2+1;

A.

15

B.

10

C.

11

D.

5 * 2+1

3.

下列关于C++语言描述不正确的是()。

A.

变量必须先定义后使用

B.

if语句不能单独存在,必须有匹配的else语句

C.

do...while至少会执行一次循环语句

D.

数组的大小可以在声明时不指定,而在初始化时由编译器推断

4.

下列选项中,循环执行次数与其他选项不同的是()。

A.

for(int i=0; i<10; i++)

B.

for(int i=1; i<=10; i++)

C.

for(int i=2; i<12; i++)

D.

for(int i=3; i<=13; i++)

5.

下列选项中,添加iostream头文件正确的写法是()。

A.

#include<iostream>

B.

include<iostream>

C.

include"iostream"

D.

#include"iostream"

二、编程题

1.

彩色气球

题目描述:

将 n 个气球排成一行,其中每个气球的颜色用数字表示,1 表示红色,2 表示绿色,3 表示蓝色。我们需要移除一些气球,使得任意相邻的两个气球颜色都不同。请计算最少需要移除多少个气球。

例如:n = 8,8 个气球的颜色依次为 1,1,1,3,2,2,3,1。

最少需要移除 3 个气球,可以使得任意相邻的两个气球颜色都不同,其中一种方案:

移除第 2 个、第 3 个和第 6 个气球。

移除后气球颜色依次为 1,3,2,3,1。

输入描述:

第一行输入一个整数 n(1≤n≤5000),表示气球的数量;

第二行输入 n 个整数(1≤整数≤3),依次表示这一行气球的颜色,红色为 1,绿色为 2,蓝色为 3,整数

之间以一个空格隔开。

输出描述:

输出一个整数,表示最少需要移除的气球数量。


样例输入:

8
1 1 1 3 2 2 3 1

样例输出:

3
2.

购买商品

题目描述:

在线商城规定,当所购买商品的总价格大于等于 300 元时,免除运费;否则,需要再支付 10 元的运费。

乐乐通过在线商城购买了 n 件商品,且已知每件商品的价格,请计算乐乐一共需要支付多少元。

例如:n = 3,3 件商品的价格分别为 10、20、30,总价格为 60 元,小于 300 元,需要额外支付 10元的运费,所以乐乐一共需要支付 70 元(70 = 60 + 10)。

输入描述:

第一行输入一个整数 n(1≤n≤50),表示乐乐购买商品的数量;

第二行输入 n 个整数(1≤整数≤100),分别表示每件商品的价格,整数之间以一个空格隔开。

输出描述:

输出一个整数,表示乐乐一共需要支付多少元。

样例输入:

3
10 20 30

样例输出:

70
3.

摆钟

题目描述:

有一座摆钟,它的摆锤每摆动一次用时 2 秒。摆锤摆动 n 次,用时多少秒?

输入描述:

输入一个整数 n(1≤n≤500),表示摆锤的摆动次数。

输出描述:

输出一个整数,表示摆锤摆动 n 次用时多少秒。


样例输入:

3

样例输出:

6
4.

取糖果

题目描述:

圣诞节时,乐乐进入了一个神奇的糖果屋,糖果屋中有 n 个罐子,每个罐子中都有若干颗糖果。糖果屋的主人为了欢迎远道而来的乐乐,让乐乐感受到糖果屋的甜蜜,允许乐乐拿取 k 次糖果,拿取规则如下:

1)每次可以从任意一个罐子中拿取一颗糖果;

2)每次拿取糖果时能够获得甜蜜值,获得的甜蜜值为拿取前这个罐子中糖果的数量。

现给定两个整数 n 和 k,以及 n 个罐子中糖果的数量。已知乐乐初始的甜蜜值为 0,请计算按照规则他能够获得的最大甜蜜值。

例如:n = 3,k = 4,3 个罐子中糖果数量依次为 10,5,11,能够获得最大甜蜜值的拿取方式如下:

第一次拿取第 3 个罐子中的一颗糖果,获得的甜蜜值为 11,拿取后 3 个罐子中糖果数量依次为 10,5,10;

第二次拿取第 1 个罐子中的一颗糖果,获得的甜蜜值为 10,拿取后 3 个罐子中糖果数量依次为 9,5,10;

第三次拿取第 3 个罐子中的一颗糖果,获得的甜蜜值为 10,拿取后 3 个罐子中糖果数量依次为 9,5,9;

第四次拿取第 1 个罐子中的一颗糖果,获得的甜蜜值为 9,拿取后 3 个罐子中糖果数量依次为 8,5,9;

最终获得的最大甜蜜值为 40(11 + 10 + 10 + 9)。

输入描述:

第一行输入两个正整数 n,k(1≤n≤105,1≤k≤109),分别表示糖果屋中罐子的数量以及乐乐可以拿取糖果的次数;

第二行输入 n 个整数(1≤整数≤109),表示每个罐子中糖果的数量,整数之间以一个空格隔开。

数据保证,所有罐子的糖果总数大于 k。

输出描述:

输出一个正整数,表示乐乐能够获得的最大甜蜜值。


样例输入:

3 4
10 5 11

样例输出:

40
5.

魔法项链

题目描述:

魔法师艾莉有一条由 n 颗宝石组成的项链,这些宝石围成一圈。每颗宝石用字符 'A' 或字符 'B' 表示,'A' 表示魔力宝石,'B' 表示普通宝石。

艾莉可以利用项链中 3 颗相邻的魔力宝石来施展一次魔咒。施展魔咒后,这 3 颗宝石就会变为普通宝石,同时艾莉的魔力值增加 1 点。

给定一个字符串 S,表示宝石项链,第一个字符和最后一个字符表示的宝石位置相邻。请计算艾莉最多能获得多少点魔力值。

例如:n = 11,S = "AABAAABABAA",第一个字符表示第 1 颗宝石,第二个字符表示第 2 颗宝石......以此类推,项链如下图所示:

艾莉可以按照以下方案来施展魔咒增加魔力值:

1)利用第 4 颗、第 5 颗和第 6 颗宝石施展一次魔咒,施展后项链状态如下:

2)利用第 1 颗、第 2 颗和第 11 颗宝石施展一次魔咒,施展后项链状态如下:

此时,项链中没有 3 颗相邻的魔力宝石,无法再施展魔咒,故艾莉最多可以获得 2 点魔力值。

输入描述:

第一行输入一个整数 n(5≤n≤1000),表示项链中宝石的总数;

第二行输入一个长度为 n 的字符串 S,S 仅包含字符 'A' 和 'B','A' 表示魔力宝石,'B' 表示普通宝石。

输出描述:

输出一个整数,表示艾莉最多可以获得多少点魔力值。


样例输入:

11
AABAAABABAA

样例输出:

2
公众号
客服 反馈
顶部